package com.smart.manager.system.entities.body;

import com.smart.common.entities.core.BaseSearch;
import com.smart.manager.system.entities.assembler.ConfigItem;
import com.smart.manager.system.entities.enums.ConfigState;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.List;


/**
 * @author xiaxuqiu
 * @date 2023/03/26
 */
public class RSystemConfig {

    @Data
    @EqualsAndHashCode(callSuper = true)
    @ApiModel("RSystemConfig1")
    public static class SearchBody extends BaseSearch {

        /**
         * 配置代码
         */
        @ApiModelProperty("配置代码")
        private String code;
        /**
         * 配置标题
         */
        @ApiModelProperty("配置标题")
        private String title;

        @ApiModelProperty("配置状态 枚举")
        private ConfigState state;
    }


    @Data
    @ApiModel("RSystemConfig2")
    public static class EditBody implements Serializable {

        /**
         * 配置代码
         */
        @ApiModelProperty("配置代码")
        @Length(max = 30, message = "配置代码  不能超过30")
        @NotBlank(message = "配置代码  不能为空")
        private String code;
        /**
         * 配置标题
         */
        @ApiModelProperty("配置标题")
        @NotBlank(message = "配置标题  不能为空")
        @Length(max = 100, message = "配置标题 不能超过100")
        private String title;


        /**
         * 配置状态 枚举 状态 0 未启用 1 已启用
         */
        @ApiModelProperty("配置状态 枚举 状态 0 未启用 1 已启用")
        @NotNull(message = "编码长度  不能为空")
        private ConfigState state;
        /**
         * 显示排序值
         */
        @ApiModelProperty("显示排序值")
        @NotNull(message = "显示排序值  不能为空")
        private Integer sort;
        /**
         * 备注信息
         */
        @ApiModelProperty("备注信息")
        @Length(max = 500, message = "编码长度  不能超过500")
        private String description;
        /**
         * 配置明细
         */
        @ApiModelProperty("配置明细")
        @NotNull(message = "配置明细  不能为空")
        @Size(min = 1, message = "配置明细  不能为空")
        @Valid
        private List<ConfigItem> items;

    }


}
